package cn.openea.perpartner.evaluation.web.service;

import cn.openea.perpartner.common.core.web.domain.AjaxResult;
import cn.openea.perpartner.evaluation.web.entity.EvaluationTask;
import cn.openea.perpartner.evaluation.web.entity.vo.EvaluationTaskVo;
import com.baomidou.mybatisplus.extension.service.IService;
import lombok.NonNull;

import java.util.List;

/**
 * @author rains
 * @since 2023-07-05 14:20
 */
public interface IEvaluationTaskService extends IService<EvaluationTask> {

    /**
     * 发布测评任务
     * @param evaluationTask 实例对象
     * @return 是否成功
     */
    AjaxResult publish(@NonNull EvaluationTask evaluationTask);

    /**
     * 获取任务详情
     * @param id
     * @return
     */
    EvaluationTask info(String id);

    /**
     * 根据订单id获取任务详情
     * @param orderId
     * @return
     */
    EvaluationTask getInfoByOrderId(String orderId);

    /**
     * 获取新的id
     * @return
     */
    String getNewId();

    /**
     * 获取测评任务列表
     * 我发起的、我参与的
     * @param vo
     * @return
     */
    List<?> selectList(EvaluationTaskVo vo);

    /**
     * 获取所有测评任务列表
     * @param vo
     * @return
     */
    List<EvaluationTask> queryAll(EvaluationTaskVo vo);

    /**
     * 活动作废
     * @param vo
     * @return
     */
    boolean finish(EvaluationTaskVo vo);

    /**
     * 活动结束报名
     * @param vo
     * @return
     */
    boolean endJoin(EvaluationTaskVo vo);

    /**
     * 补全迁移的历史数据
     * @return
     */
    boolean dealHistoricalData();

    void edit(EvaluationTask evaluationTask);
}
